#include "joueur.h"

#include <QtCore/QtConcurrentRun>
#include <QtCore/QEventLoop>

void waitForSignal(QObject* pObj, const char* pSig) {
	QEventLoop loop;
	QObject::connect(pObj, pSig, &loop, SLOT(quit()));
	loop.exec();
}

Joueur::Joueur(int pNumero, const QString& pNom) : m_nom(pNom), m_nbGraines(0), m_numero(pNumero) {
}

int Joueur::jouer_t(const Plateau& pEtat) {
	m_future = QtConcurrent::run(this, &Joueur::jouer, pEtat);
	m_futureWatcher.setFuture(m_future);
	waitForSignal(&m_futureWatcher, SIGNAL(finished()));
	return m_future.result();
}

void Joueur::prendreGraines(int pNbGraines) {
	m_nbGraines += pNbGraines;
	emit grainesPrises(pNbGraines);
}

void Joueur::quitter() {
	m_futureWatcher.cancel();
	m_future.cancel();
}
